<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        //  function  ajax(options) {
        //      setTimeout(()=>{
        //          options.success('123')
                
        //      },0)
        //  }

        //  ajax({
        //      url:'/url1',
        //      success(data) {
        //          console.log('data1',data);
        //          ajax({
        //              url:'/url2',
        //              success(data){
        //                  console.log('data2',data);
        //                  ajax({
        //                      url:'/url3',
        //                      success(data) {
        //                          console.log('data3',data);
        //                      }
        //                  })
        //              }
        //          })
        //      }
        //  })
 //产生了回调地狱，然后就有了Promise
//  let   p = new  Promise((resolve,reject) =>{
//      setTimeout(()=>{
//          //
//          resolve('123')
//          reject({status:401})
//      },0)
//  })

//    function  axios  (url) {
//        return  new  Promise((resolve,reject)=>{
//               setTimeout(()=>{
//                  resolve(1)
//               },0)
//        },0)
//    }


//   axios('/url').then(data1=>{
//       console.log('data1',data1);
//       axios('url2').then(data2=>{
//           console.log('data2',data2);
//           axios('url3').then(data3=>{
//               console.log('data3',data3);
//           })
//       })
//   })


//   链式调用，返回了一个resolve对象参数是里面的
//   axios('url1').then(data1=>{
//       console.log('data1',data1);
//       return  axios('/url2')
//   }).then(data2=>{
//       console.log('data2',data2+1);
//       return  axios('/url3')
//   }).then(data3=>{
//       console.log('data3',data3+1);
//   })


//   async  function  fn() {
//       let  data1 = await axios('/url1')
//       console.log('分界线',data1);
//       let  data2 = await  axios('url2')
//       console.log('data2',data2+1);
//       let  data3  = await axios('url3')
//       console.log('data3',data3+2);
//   }
//   fn()


 function axios(url) {
        return new Promise((resolve, reject) => {
            setTimeout(() => {
                //成功的回调函数
                resolve(1)
                //失败的回调函数
                // reject({ status: 400 })
            }, 0)
        })
    }

    //这里面的axios函数是不会被更改的
    axios('/url1').then(data1 => {
        console.log('data1=' + data1)
        return axios('/url2')
    }).then(data2 => {
        console.log('data2=' + data2+1)
        return axios('/url3')
    }).then(data3 => {
       console.log('data3=' + data3+1)
       return axios ('/url4')
    }).then(data4=>{
        console.log('data4',data4);
    
    })




    </script>
</body>
</html>